home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / source / gfxfx / sweep.pas < prev    next >
Pascal/Delphi Source File  |  1994-06-22  |  1KB  |  49 lines

  1.  
  2. program screensweep;
  3. { Screen sweep, place some mess first, by Bas van Gaalen, Holland, PD }
  4. uses crt;
  5. const vseg : word = $b800; fillchar = 32;
  6. var i,maxx,maxy : integer;
  7.  
  8. procedure retrace;
  9. begin
  10.   while (port[$3da] and 8) <> 0 do;
  11.   while (port[$3da] and 8) = 0 do;
  12. end;
  13.  
  14. procedure plot(x,y : integer); begin
  15.   mem[vseg:y*160+x+x] := fillchar; end;
  16.  
  17. procedure line(x,y,x2,y2 : integer);
  18. var d,dx,dy,ai,bi,xi,yi : integer;
  19. begin
  20.   if x < x2 then begin xi := 1; dx := x2-x; end
  21.   else begin xi := -1; dx := x-x2; end;
  22.   if y < y2 then begin yi := 1; dy := y2-y; end
  23.   else begin yi := -1; dy := y-y2; end;
  24.   plot(x,y);
  25.   if dx > dy then begin
  26.     ai := (dy-dx)*2; bi := dy*2; d := bi-dx;
  27.     repeat
  28.       if d >= 0 then begin inc(y,yi); inc(d,ai); end else inc(d,bi);
  29.       inc(x,xi); plot(x,y);
  30.     until x = x2;
  31.   end
  32.   else begin
  33.     ai := (dx-dy)*2; bi := dx*2; d := bi-dy;
  34.     repeat
  35.       if d >= 0 then begin inc(x,xi); inc(d,ai); end else inc(d,bi);
  36.       inc(y,yi); plot(x,y);
  37.     until y = y2;
  38.   end;
  39. end;
  40.  
  41. begin
  42.   if lastmode = 7 then vseg := $b000;
  43.   maxx := lo(windmax); maxy := hi(windmax);
  44.   for i := 0 to maxx do begin retrace; line(maxx div 2,maxy div 2,i,0); end;
  45.   for i := 0 to maxy do begin retrace; line(maxx div 2,maxy div 2,maxx,i); end;
  46.   for i := maxx downto 0 do begin retrace; line(maxx div 2,maxy div 2,i,maxy); end;
  47.   for i := maxy downto 0 do begin retrace; line(maxx div 2,maxy div 2,0,i); end;
  48. end.
  49.